public class Main {
    public static void main(String[] args) {
        //三目操作符
        //布尔表达式?表达式1:表达式2
        int a=10;
        int b=20;
        int min=a<b?a:b;
        System.out.println(min);
        boolean flg = true == true ? true == false ? false : true : false;
        //boolean flg = true == true ?( true == false ? false : true) : false;
        System.out.println(flg);
    }
    public static void main5(String[] args) {
        //移位运算符 >> << >>>
        // 0000 1011 -- 11
        int a=11;
        //<<左移 0001 0110--22
        System.out.println(a<<1);
        //>>右移 0000 0101-- 5
        System.out.println(a>>1);
        //>>> 无符号右移
        int b=-1;// 1111 1111 -- -1
        //0111 1111
        //意思就是不管之前的符号位是0还是1，都变为0，
        // 剩余的位数往后挪动一位
        System.out.println(b>>>1);

    }
    public static void main4(String[] args) {
        //位运算符(& | ~ ^)
        //按位与 &
        int a=11;
        int b=7;
        //0000 1011 ---a
        //0000 0111 ---b
        //0000 0011 ---3
        //System.out.println(a&b);
        //按位或 |
        //0000 1011 ---a
        //0000 0111 ---b
        //0000 1111 ---a|b 11
        //System.out.println(a|b);
        //按位异或 ^
        //0000 1011 ---a
        //0000 0111 ---b
        //0000 1100 ---a^b 12
        //System.out.println(a^b);
        //按位取反 ~
        //0000 1011 ---a
        //11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110100 --- ~a的补码
        //10000000 00000000 00000000 00000000 00000000 00000000 00000000 00001011+1
        //10000000 00000000 00000000 00000000 00000000 00000000 00000000 00001100 --- a的原码
        System.out.println(~a);
    }
    public static void main3(String[] args) {
        //逻辑运算符(&& || !)
        //1.逻辑与&&
/*      int a=1;
        int b=2;
        System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真
        System.out.println(a == 1 && b > 100); // 左为真 但 右为假 则结果为假
        System.out.println(a > 100 && b == 2); // 左为假 但 右为真 则结果为假
        System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假
   */
        //2.逻辑或||
        /*int a = 1;
        int b = 2;
        System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真
        System.out.println(a == 1 || b > 100); // 左为真 但 右为假 则结果也为真
        System.out.println(a > 100 || b == 2); // 左为假 但 右为真 则结果也为真
        System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假*/
        //3.逻辑非！
        /*int a = 1;
        System.out.println(!(a == 1)); // a == 1 为true，取个非就是false
        System.out.println(!(a != 1)); // a != 1 为false，取个非就是true*/
        //4.短路问题
        //短路问题（只判断了第一个布尔类型，就可以判断是真还是假，剩余的都不用看）
        int a=10;
        int b=20;
        System.out.println(10>20&&10/0==0);//true
        System.out.println(10<20||20/0==0);//false
        //
        System.out.println(a < b || 10/0 == 0);
    }
    public static void main2(String[] args) {
        //关系运算符< > == <= >= !=
        int a = 10;
        int b = 20;
        // 注意：在Java中 = 表示赋值，要与数学中的含义区分
        // 在Java中 == 表示相等
        System.out.println(a == b); // false
        System.out.println(a != b); // true
        System.out.println(a < b); // true
        System.out.println(a > b); // false
        System.out.println(a <= b); // true
        System.out.println(a >= b); // false
        //System.out.println(3<a<20);
    }
    public static void main1(String[] args) {
/*        //基本运算符:+ - * / %
        int a = 10;
        int b = 5;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(a % b);
        //1.int/int =int
        int c = 3;
        int d = 2;
        System.out.println(c / d);//0
        //2.做除法和取模时，右操作数不能为0
        //System.out.println(5 / 0);//error
        //System.out.println(5 % 0);//error
        //3.两侧操作数类型不一致时，向类型大的提升
        int x = 10;
        double y=0.2;
        System.out.println(1+0.2);//1.2
        //增量运算符(+= -= *= %=)
        int z=1;
        z+=2;//z=z+2
        System.out.println(z);

        z-=1;//z=z-1
        System.out.println(z);

        z*=3;//z=z*3
        System.out.println(z);

        z/=2;//z=z/2
        System.out.println(z);

        z%=2;//z=z%2
        System.out.println(z);*/
        int a = 1;
        a++; // 后置++ 表示给a的值加1，此时a的值为2
        System.out.println(a++); // 注意：后置++是先使用变量原来值，表示式结束时给变量+1，因此输出2
        System.out.println(a); // 输出3
        ++a; // 前置++ 表示给a的值加1
        System.out.println(++a); // 注意：前置++是先给变量+1，然后使用变量中的值，因此输出5
        System.out.println(a); // 输出5
        // --操作符给操作-1，与++含义类似
    }
}